feat(esp32): #83 brownout defense-in-depth (PHY TX backoff + connectivity log) - #94
Merged
Merged
Conversation
…vity log) Two firmware levers for the node 35 brownout crash-loop at phy_init. Neither touches the initial phy_init calibration PEAK that trips the reset (only the bulk cap / custom PCB #11 does) -- these are belt-and-suspenders. 1. CONFIG_ESP_PHY_REDUCE_TX_POWER=y (sdkconfig.defaults, grouped with the brownout block). IDF-native: esp_phy_reduce_tx_power() forces the lowest PHY TX power on the boot immediately after ESP_RST_BROWNOUT (phy_init.c gates it on exactly that reset reason), trimming current on the retry boot. Post-brownout backoff, NOT a peak cut. 2. Wi-Fi connectivity-transition logger (app_main.cpp). Originally scoped as a runtime reconnect backoff via ConnectivityMgr().SetWiFiStationReconnectInterval, but esp-matter's ESP32 ConnectivityManagerImpl DECLARES _SetWiFiStationReconnect- Interval without defining it (only _Get links; the interval is a fixed compile- time 5s), so that call does not link on this platform. CHIP already auto- reconnects on its 5s timer, and the field "never reconnects" symptom is the brownout reboot loop (pre-CHIP) anyway. So this ships as an observer that timestamps Lost/Established transitions -- lets a real Wi-Fi drop be told apart from a brownout reboot when triaging a node. Observer-only; touches no CHIP state. Bumps PROJECT_VER 1.1.7 -> 1.1.8 (int 10108); sdkconfig NUMBER/STRING synced. Verified: builds + links clean (debug flavour, 15% flash free). Not yet flashed to node 35. See #83. Assisted-by: AI
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two landable firmware levers for the node 35 brownout crash-loop (#83). Neither reduces the initial
phy_initcalibration peak that trips the reset (only the bulk cap / custom PCB #11 does) — belt-and-suspenders, not the fix.Changes
CONFIG_ESP_PHY_REDUCE_TX_POWER=y(sdkconfig.defaults, grouped with the brownout block). IDF-native, no code:esp_phy_reduce_tx_power()forces the lowest PHY TX power on the boot immediately afterESP_RST_BROWNOUT(phy_init.cgates it on exactly that reset reason). Post-brownout backoff on the retry boot.app_main.cpp). Originally scoped as a runtime reconnect backoff viaSetWiFiStationReconnectInterval, but esp-matter's ESP32ConnectivityManagerImpldeclares that setter without defining it (only_Getlinks; the interval is a fixed compile-time 5s) — so it does not link on this platform. CHIP already auto-reconnects on its 5s timer, and the field "never reconnects" symptom is the brownout reboot loop (pre-CHIP) anyway. Ships instead as an observer that timestamps Lost/Established transitions, so a real Wi-Fi drop can be told apart from a brownout reboot when triaging a node. Observer-only; touches no CHIP state.Version
PROJECT_VER 1.1.7 → 1.1.8 (int 10108), sdkconfig NUMBER/STRING synced.
Verification
Builds + links clean (debug flavour,
esp32-lintgreen, 15% flash free). Not yet flashed to node 35.